import axios from "axios"
import {Message} from "element-ui";

/**
 * 创建一个请求的基本对象
 */
let instance=axios.create({
    //所有URL的前缀
    baseURL:"/api",
    //请求的超时时间
    timeout:7000
})
//配置前置请求拦截器
instance.interceptors.request.use(function (config) {
    //给所有有请求添加一个公共的请求头
    config.headers["token"]="abcdefg";
    return config
},function (error){
    return Promise.reject("请求被拦截");
})
//配置后置响应拦击
/**
 * 参数1 请求成功之后的回调用  响应的HTTP的状态码必须是200
 * 参数2 请求失败 如403  405 404 500 这种HTTP异常回调的方法
 */
instance.interceptors.response.use(function (res){
    {
        //得到响应的状态码
        let code=res.data.code;
        switch (code) {
            case 20000 :
                //返回值就是页面调用方法里面后then里面接收到的值
                return Promise.resolve(res.data);
                break;
            case 40000:
                Message.error("操作失败");
                return  Promise.reject(res.data.msg);//把异常向调用者抛
                break;
            case 40003:
                Message.error("您没有权限");
                return  Promise.reject(res.data.msg);//把异常向调用者抛
                break;
            case -1:
                Message.error(res.data.msg);
                return  Promise.reject(res.data.msg);//把异常向调用者抛
                break;
        }
    }
},function (error){
    let code=error.code;
    switch (code){
        case "ERR_BAD_REQUEST":
            Message.error(error.message)
            return  Promise.reject(error.message);//把异常向调用者抛
            break;
    }
    return  Promise.reject(error.message);//把异常向调用者抛
})


/**
 * 导出这个请求对象
 */
export default function request(config){
    return instance(config)
}
